The usability and popularity of a web page are often directly related to the time required to render the page in the user's browser. In many instances, even slight improvements in the speed of client-side rendering of a web page can have dramatic positive effects on the likelihood that the user will visit the page again and on the likelihood that commercial inquiries will be converted into sales.
One method of improving web page performance is by caching content on servers or proxies in an effort to speed responses to HTTP requests. However, content that is frequently updated or that is personalized for each user (referred to herein as “dynamic content”) is not amenable to caching, except for very brief intervals. In many cases, the majority of a page's content is static and can be cached, but a portion of the page is either frequently updated or personalized for each user and must be dynamically created for each request. Such situations can make caching problematic and/or can limit its effectiveness.
Existing server-based page component assembly technologies, such as ASP.NET Substitution control, or Edge Side Includes (ESI), offer mechanisms for assembling a page in parts in an optimal location in the network prior to it being sent to the client browser. Such technologies use caching, but require work to be done at the web server prior to the response getting sent to the client browser.
Existing client-based techniques attempt to optimize the execution of client-side scripts deferring the execution of client-side scripts until a point in time best suited for optimizing the user experience. The goal of such approaches is to time script execution so as to interfere as little as possible with speedy rendering of the page.
Examples of existing technologies that attempt to optimize the rendering of pages having dynamic content include:                ESI (Edge Side Includes): ESI introduces a language that allows proxy venders to compose HTML page components nearer to the client computer. ESI breaks HTML into smaller components. ESI uses a programmatic language to describe components. A disadvantage of such an approach is that it forces server developers to create services tailored for responding to ESI requests.        Partial Page Caching (ASP.NET server-side substitution control): Like ESI, Partial Page Caching breaks the pages into smaller components. Partial Page Caching uses server side components integrated into the server. Partial Page Caching does not describe the use of a dynamic query language. Using Partial Page Caching is not an automatic process. A disadvantage of such an approach is that the system must be changed to incorporate new server-side components.        ControlJS and HeadJS: These are third party libraries used to defer content that references external scripts. In general, however, such techniques are limited to acting on script and not generic HTML. Additionally, these scripts are not dynamically generated for each user request. Instead, they are static and identical across all users. In contrast, the present invention enables content that is dynamically generated with each page request and individualized for each user to be deferred/optimized.        
In many conventional systems, when a dynamic web page is being served, the web server generates both the dynamic and static web content as a single integrated process. The result is a page that is unique for each user view and that cannot be stored in the cache of downstream devices using known methods for HTML response caching, because the output changes for each unique browser session. The performance advantages conferred by caching are thus limited.